var BaseData = {

    textData:"",

    jiami:function(ctx,url,texts){
        var textData;
        ctx.font = '12px Microsoft Yahei';
        for(var i=0,size=texts.length;i<size;i++){
            ctx.fillText(texts[i], 10, 40*i);
        }
        textData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height).data;
        this.textData=textData;

        this.image(url,ctx,'+');

        return this;
    },

    image:function(url,ctx,type){
        var _this=this;
        var img = new Image();
        img.onload = function() {
            ctx.drawImage(img, 0, 0);
            // 获取指定区域的canvas像素信息
            var orginalData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
            //_this.processData(orginalData,ctx);

            if(type=="+"){
                _this.mergeData(orginalData,ctx,_this.textData,'R');
            }else if(type=="-"){
                _this.jiemi(orginalData,ctx);
            }



        };
        img.src = url;
    },

    mergeData: function (orginalData, ctx, newData, color) {
        var oData = orginalData.data;
        var bit, offset;  // offset的作用是找到alpha通道值，这里需要大家自己动动脑筋

        switch (color) {
            case 'R':
                bit = 0;
                offset = 3;
                break;
            case 'G':
                bit = 1;
                offset = 2;
                break;
            case 'B':
                bit = 2;
                offset = 1;
                break;
        }

        for (var i = 0; i < oData.length; i++) {
            if (i % 4 == bit) {
                // 只处理目标通道
                if (newData[i + offset] === 0 && (oData[i] % 2 === 1)) {
                    // 没有信息的像素，该通道最低位置0，但不要越界
                    if (oData[i] === 255) {
                        oData[i]--;
                    } else {
                        oData[i]++;
                    }
                } else if (newData[i + offset] !== 0 && (oData[i] % 2 === 0)) {
                    // // 有信息的像素，该通道最低位置1，可以想想上面的斑点效果是怎么实现的
                    if (oData[i] === 255) {
                        oData[i]--;
                    } else {
                        oData[i]++;
                    }
                }
            }
        }
        ctx.putImageData(orginalData, 0, 0);
    },
    jiemi: function (originalData,ctx) {
        var data = originalData.data;
        for (var i = 0; i < data.length; i++) {
            if (i % 4 == 0) {
                // 红色分量
                if (data[i] % 2 == 0) {
                    data[i] = 0;
                } else {
                    data[i] = 255;
                }
            } else if (i % 4 == 3) {
                // alpha通道不做处理
                continue;
            } else {
                // 关闭其他分量，不关闭也不影响答案，甚至更美观 o(^▽^)o
                data[i] = 0;
            }
        }
        // 将结果绘制到画布
        ctx.putImageData(originalData, 0, 0);


    }
}


function inte(){
    function test(){
        setTimeout(test,1000);
        console.log("111");
    }

    setTimeout(test,1000);
}
inte();